package com.silence.gmall.product.assembler;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.silence.gmall.base.TableDataInfo;
import com.silence.gmall.product.domain.entity.SkuInfo;
import com.silence.gmall.product.dto.SkuInfoDto;
import org.mapstruct.Mapper;
import org.mapstruct.MappingConstants;

/**
 * @Author silence
 * @Date 2025-08-18 23:11
 * @Email 792245022@qq.com
 * @Version 1.0
 * @Description 库存单元工厂
 */
@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
public interface SkuInfoFactory {

    /**
     * 将Page<SkuInfo>转换为TableDataInfo<SkuInfoDto>
     *
     * @param source 源对象
     * @return 目标对象
     */
    TableDataInfo<SkuInfoDto> pageSkuInfo2TableSkuInfoDto(Page<SkuInfo> source);

    /**
     * 将SkuInfo转换为SkuInfoDto
     *
     * @param source 源对象
     * @return 目标对象
     */
    SkuInfoDto skuInfo2SkuInfoDto(SkuInfo source);

    /**
     * 将SkuInfoDto转换为SkuInfo
     *
     * @param source 源对象
     * @return 目标对象
     */
    SkuInfo skuInfoDto2SkuInfo(SkuInfoDto source);
}
